﻿
namespace EasyNet.Solr.Commons.Params
{
    public struct MoreLikeThisParams
    {
        /// <summary>
        /// enable more like this -- this only applies to 'StandardRequestHandler' maybe DismaxRequestHandler
        /// </summary>
        public const string MLT = "mlt";

        public const string PREFIX = "mlt.";

        public const string SIMILARITY_FIELDS = PREFIX + "fl";
        public const string MIN_TERM_FREQ = PREFIX + "mintf";
        public const string MIN_DOC_FREQ = PREFIX + "mindf";
        public const string MIN_WORD_LEN = PREFIX + "minwl";
        public const string MAX_WORD_LEN = PREFIX + "maxwl";
        public const string MAX_QUERY_TERMS = PREFIX + "maxqt";
        public const string MAX_NUM_TOKENS_PARSED = PREFIX + "maxntp";

        /// <summary>
        /// boost or not?
        /// </summary>
        public const string BOOST = PREFIX + "boost"; 

        /// <summary>
        /// boosting applied to mlt fields
        /// </summary>
        public const string QF = PREFIX + "qf";

        /// <summary>
        /// the /mlt request handler uses 'rows'
        /// </summary>
        public const string DOC_COUNT = PREFIX + "count";

        /// <summary>
        /// Do you want to include the original document in the results or not
        /// </summary>
        public const string MATCH_INCLUDE = PREFIX + "match.include";

        /// <summary>
        /// If multiple docs are matched in the query, what offset do you want?
        /// </summary>
        public const string MATCH_OFFSET = PREFIX + "match.offset";

        /// <summary>
        /// Do you want to include the original document in the results or not
        /// false,details,(list or true)
        /// </summary>
        public const string INTERESTING_TERMS = PREFIX + "interestingTerms";

        public enum TermStyle
        {
            NONE,
            LIST,
            DETAILS
        }
    }
}
